/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package GUI.AdministracionUsuarios;

import BE.FuncionalidadXPerfil;
import BE.Permisos;
import BL.PerfilBl;
import java.util.List;

/**
 *
 * @author CarLita
 */
public class UtilUsuarios {
    //tipos de objeto
    public static final int MARCO_REFERENCIA = 1;
    public static final int PAPEL_TRABAJO = 2;
    public static final int HALLAZGO = 3;
    public static final int RECOMENDACION = 4;
    public static final int USUARIO = 5;
    public static final int PERFIL = 6;
    public static final int LOGS = 7;
    public static final int REPORTE_PORTAFOLIO = 8;
    public static final int PROYECTO = 9;

    //tipos de permiso
    public static final char CREAR = '1';
    public static final char EDITAR = '2';
    public static final char VER = '3';
    public static final char COMPLETAR = '4';
    public static final char GENERAR_INFORME = '5';
    
    public static Permisos obtenerPermisos(int idPerfil){
        Permisos permisos = new Permisos();
        List<FuncionalidadXPerfil> funcionalidades = new PerfilBl().buscarFuncionalidadesPorIdPerfil(idPerfil);                
        for (FuncionalidadXPerfil f: funcionalidades){                        
            switch(f.getId().getIdObjeto()){
                case UtilUsuarios.MARCO_REFERENCIA:
                    permisos.setPermisoMarco(f.getTipoPermiso()==null?"":f.getTipoPermiso());
                    break;
                case UtilUsuarios.PAPEL_TRABAJO:
                    permisos.setPermisoPapel(f.getTipoPermiso()==null?"":f.getTipoPermiso());
                    break;
                case UtilUsuarios.HALLAZGO:
                    permisos.setPermisoHallazgo(f.getTipoPermiso()==null?"":f.getTipoPermiso());                    
                    break;
                case UtilUsuarios.RECOMENDACION:               
                    permisos.setPermisoRecomendacion(f.getTipoPermiso()==null?"":f.getTipoPermiso());                    
                    break;
                case UtilUsuarios.USUARIO:
                    permisos.setPermisoUsuario(f.getTipoPermiso()==null?"":f.getTipoPermiso());                    
                    break;
                case UtilUsuarios.PERFIL:
                    permisos.setPermisoPerfil(f.getTipoPermiso()==null?"":f.getTipoPermiso());                    
                    break;
                case UtilUsuarios.LOGS:
                    permisos.setPermisoLogs(f.getTipoPermiso()==null?"":f.getTipoPermiso());                    
                    break;
                case UtilUsuarios.REPORTE_PORTAFOLIO:
                    permisos.setPermisoEstado(f.getTipoPermiso()==null?"":f.getTipoPermiso());                    
                    break;
                case UtilUsuarios.PROYECTO:
                    permisos.setPermisoProyecto(f.getTipoPermiso()==null?"":f.getTipoPermiso());                    
                    break;                    
            }
        }
        return permisos;
    }
    
    public static boolean verificarPermiso(int objeto, char tipo_permiso, Permisos permisos){
        switch(objeto){
            case MARCO_REFERENCIA:
                switch (tipo_permiso){
                    case CREAR:
                        return (permisos.getPermisoMarco().indexOf(CREAR)>-1?true:false);
                    case EDITAR:
                        return (permisos.getPermisoMarco().indexOf(EDITAR)>-1?true:false);                        
                    case VER:
                        return (permisos.getPermisoMarco().indexOf(VER)>-1?true:false);                        
                }
                break;
            case PAPEL_TRABAJO:
                    
                break;
            case HALLAZGO:
                break;
            case RECOMENDACION:
                break;
            case USUARIO:
                break;
            case PERFIL:
                break;
            case LOGS:
                break;
            case REPORTE_PORTAFOLIO:
                break;
            case PROYECTO:
                break;
        }
        return true;
    }
}
